package com.demo.behavioral.strategy;

/**
 * 策略模式
 * 策略模式仅仅封装算法，提供新的算法插入到已有系统中，策略模式下在什么情况下使用什么算法是由客户端决定的，另外
 * 可以避免使用多重条件(if-else)语句，如有新的算法加入，则需再继承共同接口写一个类即可，具有更好的维护性和扩展性。
 * 实现方法就是抽象共同的方法到接口中来，每个策略都独立到每个策略类里去实现接口方法，然后再设计一个环境角色类去调用策略类。
 * @author allen
 *
 */
public class Test {
	
	public static void main(String[] args) {
		//全部计算折扣策略
		PriceStrategy primaryMember = new PrimaryMemberStrategy();
		PriceStrategy advancedMember = new AdvancedMemberStrategy(); 
		PriceCenter priceCenter = new PriceCenter();
		//使用策略计算价格
		System.out.println("初级会员计算后价格"+priceCenter.getPrice(primaryMember,1000));
		System.out.println("高级会员计算后价格"+priceCenter.getPrice(advancedMember,1000)); 
	}

}
